#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File  : dwspark调用.py
# @Author: HCY
# @Date  : 2025/5/17
# @Desc  : 讯飞星火大模型Embedding服务dwspark调用示例

from dwspark.config import Config
# 加载系统环境变量：SPARKAI_UID、SPARKAI_APP_ID、SPARKAI_API_KEY、SPARKAI_API_SECRET

# 创建配置对象，替换为您的应用信息
config = Config()
# 引入星火Embedding模型
from dwspark.models import LLMEmbedding
# 日志
from loguru import logger

'''
星火Embedding示例
'''
# 创建星火Embedding实例
model = LLMEmbedding(config)

# 示例1：获取单个文本的向量表示
logger.info('----------获取单个文本的向量表示----------')
text = '今天天气真不错'
vector = model.get_embedding(text)
if vector:
    logger.info(f'文本: {text}')
    logger.info(f'向量维度: {len(vector)}')
    logger.info(f'向量前5个元素: {vector[:5]}')

# 示例2：批量获取多个文本的向量表示
logger.info('\n----------批量获取多个文本的向量表示----------')
texts = [
    '今天天气真不错',
    '今日的天气非常好',
    '人工智能技术发展迅速'
]

vectors = model.get_embeddings(texts)
for i, vec in enumerate(vectors):
    if vec:
        logger.info(f'文本{i+1}: {texts[i]}')
        logger.info(f'向量维度: {len(vec)}')
        logger.info(f'向量前5个元素: {vec[:5]}\n')

# 示例3：计算文本相似度
logger.info('----------计算文本相似度----------')
# 计算语义相近的两段文本的相似度
text1 = '今天天气真不错'
text2 = '今日的天气非常好'
similarity1 = model.calculate_similarity(text1, text2)
if similarity1 is not None:
    logger.info(f'文本1: {text1}')
    logger.info(f'文本2: {text2}')
    logger.info(f'相似度: {similarity1}\n')

# 计算语义不同的两段文本的相似度
text3 = '人工智能技术发展迅速'
similarity2 = model.calculate_similarity(text1, text3)
if similarity2 is not None:
    logger.info(f'文本1: {text1}')
    logger.info(f'文本2: {text3}')
    logger.info(f'相似度: {similarity2}')

logger.info('示例执行完成。')